/**
 * <p>系统名称：MyAssist</p>
 * <p>业务名称: MotionCtrl  </p>
 * <p>概要说明：运动总控制</p>
 * @author: sina-yzy   
 * @date: 2013-5-28 上午11:02:18
 * @version 1.0.1
 * 更新时间:  
 * 更改内容：    
 * 最后更新者： 
 */
package com.yzy.motion.motionCtrl
{
	import flash.events.TimerEvent;
	import flash.utils.Timer;

	public final class MotionCtrl
	{
		private static var MotionVec:Vector.<IMotion>=new Vector.<IMotion>(); 
		//
		private var ctrlTimer:Timer;
		private const timerNum:int=1;
		//
		
		public function MotionCtrl(){}
		//*********************************************************************
		//Public:
		//*********************************************************************
		public function setRunVec(value:IMotion):void
		{
			if(MotionVec.length==0){
				runTimer(true);
			}
			value.No=MotionVec.length-1;
			value.step=0;
			MotionVec.push(value);
		}
		public function removeRunVec(No:uint):void{
			if(MotionVec.length<=1){
				runTimer(false);
			}
			MotionVec.splice(No,1);
		}
		//*********************************************************************
		//private:
		//*********************************************************************
		private function runTimer(isRun:Boolean=true):void{
			if(isRun){
				ctrlTimer=new Timer(timerNum);
				ctrlTimer.addEventListener(TimerEvent.TIMER,motionFunction);
				ctrlTimer.start();
			}else{
				ctrlTimer.stop();
				ctrlTimer.removeEventListener(TimerEvent.TIMER,motionFunction);
			}	
		}
		private function motionFunction(evt:TimerEvent):void{
			for (var j:int = MotionVec.length-1; j >=0; j--) 
			{
				MotionVec[j].step++;
				if(MotionVec[j].step==MotionVec[j].Interval){
					MotionVec[j].step=0;
					MotionVec[j].Motion();				
				}
			}
		}
		//*****************************************************
		// Singleton 
		//*****************************************************
		private static var _instant:MotionCtrl;
		public static function get instant():MotionCtrl
		{
			if(null == _instant)
			{
				_instant =  new MotionCtrl();
			}
			return _instant;
		}
	}
}